package com.example.study2.ClassDefinitionAndUsage.Methods;

/**
 * 宠物狗类示例
 * 演示类的定义、字段声明和方法实现
 * 注意事项：
 * 一般一个文件当中只定义一个类
 * main方法所在的类一般要使用public修饰(注意：Eclipse默认会在public修饰的类中找main方法)
 * public修饰的类必须要和文件名相同
 * 不要轻易去修改public修饰的类的名称，如果要修改，通过开发工具修改
 */
class PetDog {
    // 字段（属性）声明
    public String name;   // 狗的名字
    public String color;  // 狗的颜色
    public String breed;  // 狗的品种
    public int age;       // 狗的年龄

    /**
     * 狗的行为 - 叫
     */
    public void barks() {
        System.out.println(name + ": 小狗旺旺");
    }

    /**
     * 狗的行为 - 摇尾巴
     */
    public void wag() {
        System.out.println(name + ": 小狗摇尾巴");
    }

    /**
     * 狗的行为 - 吃东西
     * @param food 食物名称
     */
    public void eat(String food) {
        System.out.println(name + "正在吃" + food);
    }

    /**
     * 显示狗的完整信息
     */
    public void displayInfo() {
        System.out.println("=== 狗狗信息 ===");
        System.out.println("名字: " + name);
        System.out.println("颜色: " + color);
        System.out.println("品种: " + breed);
        System.out.println("年龄: " + age + "岁");
    }

    public static void main(String[] args) {
        // 创建PetDog类的实例
        PetDog dog = new PetDog();

        // 设置狗的属性
        dog.name = "大黄";
        dog.color = "黄色";
        dog.breed = "金毛";
        dog.age = 3;

        // 调用狗的方法
        dog.displayInfo();  // 显示狗的信息
        dog.barks();        // 狗叫
        dog.wag();          // 摇尾巴
        dog.eat("狗粮");     // 吃东西
    }
}

/*
运行结果：
=== 狗狗信息 ===
名字: 大黄
颜色: 黄色
品种: 金毛
年龄: 3岁
大黄: 小狗旺旺
大黄: 小狗摇尾巴
大黄正在吃狗粮
*/